/*
 * Copyright (c) 2006-2021, Halo team
 *
 * SPDX-License-Identifier: GPLv3
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-09-11     Eywen        the first version
 */

#include <rtthread.h>

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

#include "fdm_printer.h"
#include "gcode/gcode.h"
#include "serial.h"

#if (defined SOC_AB32VG1)
RT_SECTION(".irq.timer")
#endif
motion_control_t *motion_control;
gcode_handle_t gcode_handle;
fdm_printer_t fdm_print;

int main(void)
{
//    motion_control_test();
    /* 初始化gcode处理线程任务 */
    gcode_handle_register(&gcode_handle);
    gcode_handle.ops->set_parent(&gcode_handle, &fdm_print);
    gcode_handle.ops->init(&gcode_handle);

    /* 初始化电机控制线程 */
    motion_control = motion_control_create();
    motion_control->ops->init(motion_control);

    /* 初始化顶层打印接口模块 */
    fdm_print.motion_control = motion_control;

    /* 开始进程 */
    gcode_handle.ops->start(&gcode_handle);
    motion_control->ops->start(motion_control);
    /* 初始化硬件定时器、温度传感器模块等  */
    fdm_printer_test();

    serial_thread_init(NULL);

    while (1)
    {
        //gcode_test(&gcode_handle);
        //debug_info("Hello RT-Thread!");
        rt_thread_mdelay(5000);
    }

    return RT_EOK;
}

